package main

import "fmt"

// 基本数据类型
func dataStructure() {
	// int 默认值是0，boolean默认值是false，字符串默认值是""
	// 运算采用补码
	// Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。
	fmt.Println()
	fmt.Println("=========dataStructure========")
	fmt.Println()
	var tr = true
	var fa bool = false
	fmt.Println(tr)
	fmt.Println(fa)
	var int1 = 1
	// float 32,64
	var float1 = 1.1
	// 虚数，是实数的反面（实数既有理数和无理数的总和）
	var com complex64 = 4
	// uint 8,16,32,64
	// int 8,16,32,64
	var i uint8 = 255
	fmt.Println(int1)
	fmt.Println(float1)
	fmt.Println(i)
	fmt.Println(com)
	var b byte = 1
	// 类似int32
	var r rune = 32
	// 无符号整型，用于存放一个指针
	var u uintptr = 1
	fmt.Println(b)
	fmt.Println(r)
	fmt.Println(u)

	var in, j int = 1, 2
	fmt.Println(in, j)

	fmt.Println("============Test init===============")
	var a1 int              // 0
	var a2 *int             // <nil>
	var a3 []int            // []
	var a4 map[string]int   // <nil>
	var a5 chan int         // <nil>
	var a6 func(string) int // <nil>
	var a7 error            // error是接口 // <nil>
	fmt.Println(a1)
	fmt.Println(a2)
	fmt.Println(a3)
	fmt.Println(a4)
	fmt.Println(a5)
	fmt.Println(a6)
	fmt.Println(a7)

	/**
	 * 特殊的定义方式
	 */
	// 一般只能在函数体中用
	ina := 1 // 等于 var ina int = 1
	fmt.Println(ina)
	// 一般用于全局变量
	var (
		vara int
		varb float32
	)
	fmt.Println(vara)
	fmt.Println(varb)
}
